/**
 * 字符 char
 * char数据类型被设计为保存单个character. 字符可以是单个字母、数字、符号或空格。
 * char 数据类型是整型，这意味着基础值存储为整数。类似于布尔值0被解释为false以及非零值被解释为true，变量存储的整数char被解释为ASCII character。
 * ASCII代表美国信息交换标准代码，它定义了一种将英文字符（加上一些其他符号）表示为 0 到 127 之间的数字（称为 ASCII 代码或代码点）的特定方式。例如，ASCII 代码 97 被解释为字符“a”。
 * 字符文字始终放在单引号之间（例如'g'、'1'、' '）。
 * 
 * 转义序列
 * C++ 中有一些具有特殊含义的字符。这些字符称为转义序列。转义序列以“\”（反斜杠）字符开头，然后是后面的字母或数字。
 * 
 * 转义序列以反斜杠 (\) 开头，而不是正斜杠 (/)。如果您不小心使用了正斜杠，它仍然可以编译，但不会产生所需的结果。
 * 
 * 将符号放在单引号和双引号中有何区别？
 * 单个字符始终放在单引号中（例如'a', '+', '5'）。一个char只能代表一个符号（例如字母a、加号、数字5）。
 * 双引号之间的文本（例如“Hello, world!”）被视为由多个字符组成的字符串。
 * 
 */

#include <iostream>

int main()
{
    // 这两种初始化结果完全不同
    char c{5}; // initialize with integer 5 (stored as integer 5)
    char c1{'5'}; // initialize with code point for '5' (stored as integer 53)


    char ch1{ 'a' }; // (preferred)
    std::cout << ch1; // cout prints character 'a'

    char ch2{ 98 }; // code point for 'b' (not preferred)
    std::cout << ch2; // cout prints a character ('b')


    std::cout << "Input a keyboard character: "; // assume the user enters "abcd" (without quotes)

    char ch{};
    std::cin >> ch; // ch = 'a', "bcd" is left queued.
    std::cout << "You entered: " << ch << '\n';

    // Note: The following cin doesn't ask the user for input, it grabs queued input!
    std::cin >> ch; // ch = 'b', "cd" is left queued.
    std::cout << "You entered: " << ch << '\n';


    return 0;
}